package com.commerce.user.controller;

import com.commerce.common.entity.User;
import com.commerce.common.utils.Result;
import com.commerce.user.entity.Permission;
import com.commerce.user.entity.Role;
import com.commerce.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Slf4j
@RestController
@RequestMapping("/api/debug")
public class DebugController {

    @Autowired
    private UserService userService;

    /**
     * 获取用户详细信息（包括角色和权限）
     */
    @GetMapping("/user/{id}")
    public Result<Map<String, Object>> getUserDetail(@PathVariable Long id) {
        try {
            // 获取用户基本信息
            User user = userService.getById(id);
            if (user == null) {
                return Result.error("用户不存在");
            }
            
            // 清除敏感信息
            user.setPassword(null);
            
            // 获取用户角色
            List<Role> roles = userService.getUserRoleList(id);
            
            // 获取用户权限
            List<Permission> permissions = userService.getUserPermissionList(id);
            
            Map<String, Object> result = new HashMap<>();
            result.put("user", user);
            result.put("roles", roles);
            result.put("permissions", permissions);
            
            return Result.success(result);
        } catch (Exception e) {
            log.error("获取用户详情失败", e);
            return Result.error("获取用户详情失败：" + e.getMessage());
        }
    }
    
    /**
     * 获取所有用户列表
     */
    @GetMapping("/users")
    public Result<List<User>> getAllUsers() {
        try {
            List<User> users = userService.list();
            
            // 清除敏感信息
            users.forEach(user -> user.setPassword(null));
            
            return Result.success(users);
        } catch (Exception e) {
            log.error("获取用户列表失败", e);
            return Result.error("获取用户列表失败：" + e.getMessage());
        }
    }
    
    /**
     * 获取所有角色列表
     */
    @GetMapping("/roles")
    public Result<List<Role>> getAllRoles() {
        try {
            // 这里我们需要通过RoleMapper获取所有角色
            List<Role> roles = userService.getRoleList();
            return Result.success(roles);
        } catch (Exception e) {
            log.error("获取角色列表失败", e);
            return Result.error("获取角色列表失败：" + e.getMessage());
        }
    }
    
    /**
     * 获取所有权限列表
     */
    @GetMapping("/permissions")
    public Result<List<Permission>> getAllPermissions() {
        try {
            // 这里我们需要通过PermissionMapper获取所有权限
            List<Permission> permissions = userService.getPermissionList();
            return Result.success(permissions);
        } catch (Exception e) {
            log.error("获取权限列表失败", e);
            return Result.error("获取权限列表失败：" + e.getMessage());
        }
    }
} 